// 用来创建swagger文档对象
const swaggerJSDOC = require('swagger-jsdoc')
// 提供了展示API文档的UI界面
const swaggerUI = require('swagger-ui-express')
// 获取服务器端口号
const { PORT } = require('./config')
// 设置swagger文档的基础信息
const swaggerDefinition = {
  openapi: '3.0.0', // 指定使用OpenAPI3.0规范
  info: {
    title: '微信支付后台',
    version: '1.0.0',
    description: '微信支付后台接口文档'
  },
  tags: [
    {
      name: 'Product', // 产品
      description: '产品管理'
    },
    {
      name: 'Order', // 订单
      description: '订单管理'
    },
    {
      name: 'Payment', // 支付
      description: '支付'
    }
  ],
  servers: [
    {
      url: `http://localhost:${PORT}`
    }
  ]
}
// 配置swagger 选项
const swaggerOptions = {
  swaggerDefinition, // 前面的定义信息
  apis: ['./routes/*.js'] // 指定包含API注释的文件路径
}
// 使用配置选项创建swagger文档规范对象
const swaggerSpec = swaggerJSDOC(swaggerOptions)
module.exports = (app) => {
  // 使用中间件
  // swaggerUI.serve 提供静态资源 html css js
  // swaggerUI.setup(swaggerSpec) 提供UI界面
  app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(swaggerSpec))
}
